//解决IE下调试代码console.log报错的问题
if(!window.console)window.console={log:function(){}};
//为firefox中增加window.event对象
if($.browser.mozilla){
	function SearchEvent(){func=SearchEvent.caller;while(func!=null){var arg0=func.arguments[0];if(arg0){if(arg0.constructor==Event||arg0.constructor==MouseEvent||(typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))return arg0;}func=func.caller;}return null;}
	window.constructor.prototype.__defineGetter__("event",function(){return SearchEvent();});
}

$.fn.combo.defaults.panelWidth=$.fn.combobox.defaults.panelWidth=$.fn.combotree.defaults.panelWidth=240;
$.fn.combobox.defaults.onShowPanel=function(){
	var param = $(this).combobox('options');
	var div = $(this).combobox('panel');
	if(param.multiple&&div.attr('class').indexOf('multiple-combo')<0){
		var vals=$(this).combobox('getValues');
		if(vals.length==1&&vals[0]=='')$(this).combobox('setValues',[]);
		div.addClass('multiple-combo').css('position','relative');
		if(!param.notSelAll){
			$('<span class="selall">全选</span>')
			.appendTo(div).click(function(){
				if($(this).attr('class').indexOf('selallselected')>=0){//已全选时全部取消
					$(this).removeClass('selallselected').parent().find('>.combobox-item-selected').click();
				}
				else{
					$(this).addClass('selallselected').parent().find('>.combobox-item:not(.combobox-item-selected)').click();
				}
			});
		}
		$('>.combobox-item[value=""]',div).remove();
	}
};
$.fn.combotree.defaults.onShowPanel=function(){
	var param = $(this).combotree('options');
	var div = $(this).combotree('panel');
	var tree = $(this).combotree('tree');
	div.scrollTop(0);
	tree.tree('collapseAll');//关闭所有节点
	for(var i=0,ary=tree.tree('getRoots');ary&&i<ary.length;i++){
		tree.tree('expand',ary[i].target);//展开第一层
	}
	if(n=tree.tree('getSelected')){
		tree.tree('expandTo',n.target);
		if($('.tree-node-selected',div).position()){//选中的内容滚动到能看到的区域内
			div.scrollTop($('.tree-node-selected',div).position().top-div.height()/2);
		}
	}
	if(div.css('position')=='relative')return;
	div.css('position','relative');
    if(!param.noClear){
    	$('<a href="javascript:void(0);" style="position:absolute;right:3px;top:1px;color:blue;">清空</a>')
    	.appendTo(div).data('th',this).click(function(){
    		$($(this).data('th')).combotree('setValue','').combotree('hidePanel');
    	});
    }
	if(param.multiple){
	    $('<a href="javascript:void(0);" style="position:absolute;right:'+(param.noClear?3:35)+'px;top:1px;color:blue;">级联</a>')
	    .appendTo(div).data('th',this).click(function(){
	    	$($(this).data('th')).combotree({
     		   cascadeCheck:$(this).text()!='级联'
     		});
    		$(this).text($(this).text()=='级联'?'不级联':'级联');
    	});
	}
};
$(document).mousemove(function(){//使用hhtip="xxx"做为内容揭示
	var e=$($.event.fix(event).target);
	if(e.attr('hhtip')){
		if($('#_hhtip').length==0){
			$('<span id=_hhtip class=hhtip></span>').appendTo('body');
		}
		var tip=$('#_hhtip').css('width','').html(e.attr('hhtip')).show();
		tip.width(Math.min(tip.width(),300));
		var pos = e.offset(),posflag=e.attr('hhtippos')||'right';
		pos.left-=1;
		if(posflag=='right')pos.left+=e.width()+2;
		else if(posflag=='left')pos.left-=tip.outerWidth()+2;
		else if(posflag=='top')pos.top-=tip.outerHeight()+2;
		else if(posflag=='bottom')pos.top+=e.height()+2;
		if(pos.left-$(document).scrollLeft()<0)pos.left+=tip.outerWidth()+e.width()+4;
		else if(pos.left-$(document).scrollLeft()+tip.outerWidth()>$(window).width())pos.left-=tip.outerWidth()+('left,right'.indexOf(posflag)>=0?e.width():-e.width());
		if(pos.top-$(document).scrollTop()<0)pos.top+=tip.outerHeight()+e.height()+3;
		else if(pos.top-$(document).scrollTop()+tip.outerHeight()>$(window).height())pos.top-=tip.outerHeight()+('top,bottom'.indexOf(posflag)>=0?e.height():-e.height());
		tip.css(pos);
		if(!e.data('tipmouseout')){
			e.data('tipmouseout',true).mouseout(function(){
				e.data('tipmouseout',false);
				$('#_hhtip').hide();
			});
		}
	}
});
//获取网站虚拟目录
function getRootPath(){
		var strFullPath=window.document.location.href;
		var strPath=window.document.location.pathname;
		var pos=strFullPath.indexOf(strPath);
		var prePath=strFullPath.substring(0,pos);
		var postPath=strPath.substring(0,strPath.substr(1).indexOf('/')+1);
		return(prePath+postPath);
   }
//扩展的验证类型
$.extend($.fn.validatebox.defaults.rules, {
    image: {
        validator: function(value, param){
            value = value.toLowerCase();
            if(value.indexOf(".jpg")>0||value.indexOf(".jpeg")>0||value.indexOf(".gif")>0||value.indexOf(".png")>0)
               return true;
            else
               return false;
        },
        message: '请选择(jpg,jpeg,gif,png)格式的图片文件！'
    },
    flash: {
        validator: function(value, param){
            value = value.toLowerCase();
            if(value.indexOf(".swf")>0)
               return true;
            else
               return false;
        },
        message: '请选择swf格式的flash文件！'
    },
    file: {
        validator: function(value, param){
            value = value.toLowerCase();
            if(value.indexOf(".zip")>0||value.indexOf(".rar")>0||value.indexOf(".txt")>0)
               return true;
            else
               return false;
        },
        message: '请选择(zip,rar,txt)格式的文件！'
    },
    intNumber: {
        validator: function(value, param){
            var patrn=/^[0-9]{1,20}$/;
			if (!patrn.exec(value)) 
			   return false;
			else if(value<param[0])
			   return false;
			else if(value>param[1])
			   return false;
			else         
			   return true; 
        },
        message: '请录入正整数,范围在{0}至{1}'
    },    
    floatNumber: {
        validator: function(value, param){
            var patrn=/^(\d+)\.?([\d]*)$/;
			if (!(res=patrn.exec(value))) 
			   return false;
			else if(res[1]&&res[1].length>param[0])
				   return false;
			else if(res[2]&&res[2].length>param[1])
				   return false;
			else         
			   return true; 
        },
        message: '数字格式错误,整数不超过{0}位，小数不超过{1}位'
    },    
   validDate: {
	        validator: function(value, param){
			    var result = value.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);
			    if(result==null)
			    return false;
			    else if(value.length!=10)
			    return false;
			    else
			    return true;  
	        },
	        message: '日期格式不正确，请按照YYYY-MM-DD格式录入！'
	    },
   validTimeDate: {
	        validator: function(value, param){
				var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
				var r = value.match(reg); 
				if(r==null)return false; 
				else
				return true;
	        },
	        message: '日期时间格式不正确，请按照YYYY-MM-DD hh:mm:ss格式录入！'
	    },
   validTime:{
   	        validator: function(value, param){
				var reg = /^(([0-1][0-9])|(2[0-3])|([0-9])):(([0-5][0-9])|([0-9]))$/; 
				if(value.length!=5)
				return false;
				var r = value.match(reg); 
				if(r==null)return false; 
				else
				return true;
	        },
	        message: '日期时间格式不正确，请按照hh:mm格式录入！'
   },
   //特殊字符验证(全部的特殊英文字符)
   specialChar:{
            validator: function(value, param){
	            //var reg= /[~!@#$%^&*();:\[\],.?/{}<>'"_\\]/;
	            var reg = /[$%<>'"\\]/;
				var r = value.match(reg); 
				if(r==null)return true; 
				else
				return false;
	        },
	        //message: '不能录入~!@#$%^&*();:[]<>_\'\"等字符！'
	        message: '不能录入$%<>\'\"等字符！'
   },
   //html特殊字符验证
   specialHtmlChar:{
            validator: function(value, param){
	            var reg= /[<>'"]/;
				var r = value.match(reg); 
				if(r==null)return true; 
				else
				return false;
	        },
	        message: '不能录入<>\'\"以上字符！'
   }    
});

$.extend($.fn.tabs.defaults,{
	onClose:function(title){if($('#'+$('#opTabs').data(title)+'').each(function(obj){obj.removeNode(true);}));}
});


//默认的分页属性
var defaultPagination = {
		displayMsg:'当前第 {from} 至 {to} 行，共 {total} 行',
		beforePageText:'第',
		afterPageText:'页，共{pages}页'
};

//默认的编辑器属性
var defaultEditor = 
{       skin:'vista',
        tools:"mfull",
        //tools:"Cut,Copy,Paste,Pastetext,|,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,|,SelectAll,Removeformat,Align,Outdent,Indent,|,Link,Unlink,Img,Flash,Media,Emot,Table", 
       // tools:"Cut,Copy,Paste,Pastetext,|,Fontface,FontSize,FontColor,BackColor,|,SelectAll,Removeformat,Align,Outdent,Indent,|,Emot",
        upLinkUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=file",
        upLinkExt:"zip,rar,txt",
        upImgUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=image",
        upImgExt:"jpg,jpeg,gif,png",
        upFlashUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=flash",
        upFlashExt:"swf"
};
//简化按钮的编辑器属性
var miniEditor = 
{       skin:'vista',
        tools:"Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,Emot", 
        upLinkUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=file",
        upLinkExt:"zip,rar,txt",
        upImgUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=image", 
        upImgExt:"jpg,jpeg,gif,png",
        upFlashUrl:"!"+getRootPath()+"/pub/editor/upload.jsp?uploadType=flash",
        upFlashExt:"swf"
};

if(!window.defaultDataGrid)window.defaultDataGrid={};
//初始化datagrid的自定义默认属性
$.extend($.fn.datagrid.defaults,defaultDataGrid);
//初始化pagination的自定义默认属性
$.extend($.fn.pagination.defaults,defaultPagination);    
//将表格ID进行存储，在window的resize事件中会用到

//继承datagrid的，框架中统一使用该对象
$.fn.grid = function(opts){
   	//给window的resize事件加上表格自动调整大小的代码
   	if(!window.gridresize){
   		window.gridresize=true;
   		$(window).data('grid_id_cache',[]);
   		$(window).bind('resize',function(){
   			var ary = $(window).data('grid_id_cache');
   			for(var i=0;i<ary.length;i++){
   				var pdiv = ary[i];
   				if(!pdiv||!pdiv.parentNode)continue;
   				pdiv.style.width = '10px';
   				pdiv.style.height = '10px';
   				pdiv.style.width = pdiv.parentNode.clientWidth+'px';
   				pdiv.style.height = pdiv.parentNode.clientHeight+'px';
   				$('#'+pdiv.grid_id).trigger('_resize');
   			}
   		});
   	}
	var pdiv = $('<div></div>')[0];
	pdiv.grid_id = this[0].id;
	$(pdiv).css({width:'100%',height:'100%',overflow:'hidden'});
	$(pdiv).appendTo(this[0].parentNode);
	this.appendTo(pdiv);
   	$(window).data('grid_id_cache').push(pdiv);
   	var qp = opts.queryParams;
   	if(qp&&(qp['']||qp['']==''))qp['']=undefined;
	//opts.title = null;  统一控制是否显示标题
   	this.datagrid(opts);
   	this.gridscroll();
};
$.fn.gridscroll = function(){
	$(this).datagrid('getPanel').find(".datagrid-body-inner").bind('mousewheel',function(ev){
		var c = $(this).parents('.datagrid-view').find('.datagrid-view2>.datagrid-body');
		c.attr('scrollTop',c.scrollTop()-event.wheelDelta/5);
	});
};

//默认的删除操作（删除数据地址）
function defaultDeleteItems(delActionName,param,info){
		info = info||'删除';
		var rows = $('#searchTable').datagrid('getSelections');					
		if (rows.length>0){
		   if(rows.length>20){
		       $.messager.alert('警告', '您要'+info+'的数据过多，为保证数据安全，请控制在20条以内！','warning');
		   }else{
			   $.messager.confirm('警告', '您确定要'+info+'数据吗?', function(r){
				if (r){
				      var ids = new Array();
				      //当删除的数据大于行时，容易造成浏览器崩溃死掉
					  for(var i=0;i<rows.length;i++){
						ids[i] = rows[i].vcId;
					  }
					param = $.extend({},param,{chkSelf:ids});
					 $.post(delActionName,param,function(data){
					    try{
					            jsonReStr = jQuery.parseJSON(data);  //获取从服务器得到的数据反馈信息
					            if(jsonReStr.opState=="success"){    //操作成功处理
					            	$('div.datagrid-header-check input[type="checkbox"]').attr('checked',false);//全选框复原
						            $.util.showTip({content:'数据'+info+'成功！'});
						            $('#searchTable').datagrid('reload'); //刷新数据列
					            }else if(jsonReStr.opState=="failure"){  //操作失败处理
					                $.messager.alert('消息提示','操作处理失败！原因如下：<br><font color=red>'+jsonReStr.opInfo+'</font>','error');
					            }
				            }catch(e){
				            	msg = ''+e;
				            	if(msg.length>280)msg = msg.substr(0,280)+'...';
				               $.messager.alert('消息提示','出现系统错误!可能原因如下：<br><font color=red>'+this.url+'页面地址未找到！或'+msg+'</font>','error');
				            }
					 });//删除操作
					}
				});
		   }
		}else{
		   $.messager.alert('消息提示','请选择要'+info+'的数据','error');
		}
}
//产生一个id为operateWindow的窗口，用于加载添加和编辑页面
function getOperatorWindow(butParams,options){
	//butParams参数为{but:[{id:'addbt',name:'添加',classname:'icon-ok'},{id:'editbt',name:'修改',classname:'icon-ok'}]}
	//按钮显示html
	options = $.extend({winId:'operateWindow',contentId:'div_page_easyui',btnId:'btnArea',parWin:'body'},options);
	var strbt="";
	if(butParams!=null&&!jQuery.isEmptyObject(butParams)){//参数对象不为空，且内容不为空
	var dataObj=eval(butParams);//转换为json对象 
	    if(dataObj.but.length>0){//按钮数量大于0
	      var btnsbg=getRootPath()+'/images/btnsbg.jpg';
		strbt+="<div id='"+options.btnId+"' region=\"south\" border=\"false\" style=\"height:33px;background-image:url('"+btnsbg+"'); background-repeat:repeat-x;border-top:#a5c2e8 1px solid;text-align:right; padding-top:2px;width:99%;\">";
       $.each(dataObj.but,function(idx,item){
       		if(item.name&&item.name.length>0){
		   		strbt+="<a class=\"easyui-linkbutton\" iconCls=\""+item.classname+"\" id=\""+item.id+"\">"+item.name+"</a>";
       		}
		   });
		strbt+="</div>";
		}
	}

	if($('#'+options.winId).length==0){
		var div = $('<div class="easyui-window" style="width:100%;height:100%;overflow:hidden"><div class="easyui-layout" fit="true" style="width:100%;height:100%"><div region="center" border="false" id="'+options.contentId+'"></div>'+strbt+'</div></div>');
		div.attr({id:options.winId,closed:"true",modal:"true",collapsible:"false",minimizable:"false",maximizable:"true",closable:"true"});
		div.appendTo(options.parWin);
		$(window).scroll(function(){//窗口滚动时弹出窗口也随着滚动
			var o=$('#'+options.winId);
			if(o.length>0){
				if(o.window('panel')&&o.window('panel').css('display')!='none'){
					var opts = o.window('options');
					var w=$(window);
					opts.top=Math.min(opts.top+opts.height,w.scrollTop()+w.height())-opts.height;
					opts.left=Math.min(opts.left+opts.width,w.scrollLeft()+w.width())-opts.width;
					opts.top=Math.max(opts.top,w.scrollTop());
					opts.left=Math.max(opts.left,w.scrollLeft());
					o.window('resize',opts);
				}
			}
		});
	}
	return $('#'+options.winId);
}
var defaultChildWinParam={parWin:'#operateWindow',width:'auto',height:'auto',collapsible:false,minimizable:false};
function openChildWindow(opt){
	opt = $.extend({},defaultChildWinParam,opt);
	var pwin = $(opt.parWin);
	if(pwin.length==0){
		console.log('找不到父窗口'+opt.parWin);
		return;
	}
	parOpt = pwin.window('options');
	opt.width = opt.width=='auto'?parOpt.width:Math.min(parOpt.width,parseInt(opt.width));
	opt.height = opt.height=='auto'?parOpt.height:Math.min(parOpt.height,parseInt(opt.height));
	opt.left = parOpt.left+(parOpt.width-opt.width)/2;
	opt.top = parOpt.top+(parOpt.height-opt.height)/2;
	var href = opt.href&&typeof(opt.href)=='string'?opt.href+(opt.href.indexOf('?')>0?'&':'?')+'t='+new Date().getTime():null;
	opt.href=null;
	var content = opt.content;
	opt.content=null;
	var div = $('#operateWindowChild');
	if(div.length==1){
		try{
			div.window('window').remove();
		}
		catch(e){
			div.remove();
		}
	}
	div = getOperatorWindow(opt.butParams,{winId:'operateWindowChild',contentId:'operateWindowChildMain',btnId:'operateWindowChildBtns',parWin:pwin});
	$("#operateWindowChildMain").html('<table width=100% height=100%><tr><td align=center valign=middle><h1>正在加载...</h1></td></tr></table>');
	div.window(opt);
	div.window('open');
	$.parser.parse($('#operateWindowChild'));
	if(href){
		$("#operateWindowChildMain").load(href);
	}
	else if(content){
		$("#operateWindowChildMain").html(content);
	}
	var tmpfun = parOpt.onClose||function(){};
	parOpt.onClose=function(){
		try{tmpfun();}catch(e){;}
		$('#operateWindowChild').window('close');
	};
	return div;
}
//  默认的弹出窗口属性
var defaultWinParms = {};
//默认的打开窗口的操作(页面地址，窗口标题，窗口高度，窗口宽度，打开页面时的传递参数，弹出窗口的属性,按钮属性)
function defaultOpenWindow(addUrl,title,windowW,windowH,params,winParams,butParams){
        title = title||"新窗口";
        windowH = windowH||300;
        windowW = windowW||400;
        params = params||{};
		butParams=butParams||{};
        //当窗口高度高于450时，将窗口高度设置为450，并以此高度进行居中
        windowW = Math.max(10,Math.min(windowW,$(window).width()-30));
        windowH = Math.max(10,Math.min(windowH,$(window).height()-20));
        var left = ($(window).width()-windowW)/2+$(document).scrollLeft();
        var top = ($(window).height()-windowH)/2+$(document).scrollTop();
        winParams = winParams||defaultWinParms;
        winParams = $.extend({
			 title:title,
			 width:windowW,
		     height:windowH,
			 left:left,
			 maximizable : true,
             top:top,
             draggable:true,
             onMaximize:function(){//处理弹出窗口最大化时超过可见区域的问题
            	 var opts=$(this).window('options');
            	 if(!opts.oldSize){
            		 $(this).window('restore');
            		 opts.oldSize={width:opts.width,height:opts.height,left:opts.left,top:opts.top};
                	 $(this).window('resize',{left:$('body').scrollLeft(),top:$('body').scrollTop(),width:$(window).width(),height:$(window).height()});
            	 }
            	 else{
            		 $(this).window('restore').window('resize',opts.oldSize);
            		 opts.oldSize=null;
            	 }
             }
			 /*resize:function(){ alert('dd');}             
             onClose:function(){
                 //当点击关闭后销毁该窗口对象，否则循环调用时可能会引起页面显示异常
                 $('#operateWindow').window('destroy',false);
             }
             */
             
		},winParams);
		//清除窗口内容，避免打开窗口时显示前一操作时的页面信息内容
		$('#operateWindow').window('destroy',false);
		//重新设置窗口属
		getOperatorWindow(butParams).window(winParams);
		//清除窗口内容，避免打开窗口时显示前一操作时的页面信息内容
		//getOperatorWindow().empty();
		$("#div_page_easyui").empty();
		$("#div_page_easyui").html('<table width=100% height=100%><tr><td align=center valign=middle><h1>正在加载...</h1></td></tr></table>');
		//加载添加页面
		if(addUrl&&addUrl!='')
		   $("#div_page_easyui").load(addUrl,params);
		getOperatorWindow(butParams).window('open'); 
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
		if($('#reMinWin').length!=0){
			$('#reMinWin').hide();
		}
		//解析easyui标签
		$.parser.parse($('#operateWindow'));
}

//默认的打开添加界面操作（添加界面地址，宽度，高度,窗口标题，打开页面时的传递参数，弹出窗口的属性）
function defaultOpenAddPage(addUrl,windowW,windowH,title,params,winParams){
	     var butParams={};
        defaultOpenWindow(addUrl,title||'增加记录',windowW,windowH,params,winParams,butParams);
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}
//默认的打开添加界面操作带按钮（添加界面地址，宽度，高度,标题,传递参数,窗口属性,按钮属性）
function defaultOpenAddPageHavebtn(addUrl,windowW,windowH,title,params,winParams,butParams){
	//设置按钮默认参数
	butParams=butParams||{};
   if(jQuery.isEmptyObject(butParams)){
	  butParams={but:[{id:'addBtn',name:'保存',classname:'icon-save'}]};
	  }
  defaultOpenWindow(addUrl,title||'增加记录',windowW,windowH,params,winParams,butParams);
  //王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}

//默认的打开编辑界面的操作（编辑界面地址，宽度，高度,编辑数据的主键，窗口标题，弹出窗口的属性）
function defaultOpenModifyPage(editActionName,windowW,windowH,vcId,title,winParams){
	    var butParams={};
        if(!vcId||typeof(vcId)!='string'){
			var rows = $('#searchTable').datagrid('getSelections');					
			if (rows.length>1){
			   $.messager.alert('消息提示','编辑时请选择单条数据','error');
			}else if(rows.length==1){
				vcId = rows[0].vcId;
			}else{
			   $.messager.alert('消息提示','请选择要编辑的数据','error');
			}
        }
        if(vcId){
        	defaultOpenWindow(editActionName,title||'修改记录',windowW,windowH,{chkSelf:vcId},winParams,butParams);
        }
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}

//默认的打开编辑界面的操作带按钮（编辑界面地址，宽度，高度,编辑数据的主键,标题,窗口属性,按钮属性）
function defaultOpenModifyPageHavebtn(editActionName,windowW,windowH,vcId,title,winParams,butParams){
        if(!vcId||typeof(vcId)!='string'){
			var rows = $('#searchTable').datagrid('getSelections');					
			if (rows.length>1){
			   $.messager.alert('消息提示','编辑时请选择单条数据','error');
			}else if(rows.length==1){
				vcId = rows[0].vcId;
			}else{
			   $.messager.alert('消息提示','请选择要编辑的数据','error');
			}
        }
		//设置按钮默认参数
	butParams=butParams||{};
    if(jQuery.isEmptyObject(butParams)){
	  butParams={but:[{id:'addBtn',name:'保存',classname:'icon-save'}]};
	  }
        if(vcId){
        	defaultOpenWindow(editActionName,title||'修改记录',windowW,windowH,{chkSelf:vcId},winParams,butParams);
        }
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}

//默认的打开操作界面的操作带按钮（操作界面地址，宽度，高度,操作数据的主键,标题,窗口属性,按钮属性）
function defaultOpenDealPageHavebtn(dealActionName,windowW,windowH,vcId,title,winParams,butParams){
	$.messager.alert('消息提示','++++++++++++++++++++++');

        if(!vcId||typeof(vcId)!='string'){
			var rows = $('#searchTable').datagrid('getSelections');					
			if (rows.length>1){
			   $.messager.alert('消息提示','请选择单条记录','error');
			}else if(rows.length==1){
				vcId = rows[0].vcId;
			}else{
			   $.messager.alert('消息提示','请选择记录','error');
			}
        }
		//设置按钮默认参数
	butParams=butParams||{};
    if(jQuery.isEmptyObject(butParams)){
	  butParams={but:[{id:'addBtn',name:'保存',classname:'icon-save'}]};
	  }
        if(vcId){
        	defaultOpenWindow(dealActionName,title||'操作记录',windowW,windowH,{chkSelf:vcId},winParams,butParams);
        }
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}



//默认的打开编辑界面的操作带按钮,用于没使用easyui生成表格的页面（编辑界面地址，宽度，高度,标题,窗口属性,按钮属性）
function defaultOpenModifyPageHavebtn2(editActionName,windowW,windowH,title,winParams,butParams){
	var chks = getSelIds();				
	if (chks.length>1){
	   $.messager.alert('消息提示','编辑时请选择单条数据','error');
	   return;
	}else if(chks.length==0){
       $.messager.alert('消息提示','请选择要编辑的数据','error');
       return;
	}
	//设置按钮默认参数
	butParams=butParams||{};
    if(jQuery.isEmptyObject(butParams)){
	  butParams={but:[{id:'addBtn',name:'保存',classname:'icon-save'}]};
	  }
    defaultOpenWindow(editActionName,title||'修改记录',windowW,windowH,{chkSelf:chks[0]},winParams,butParams);
		//王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}

//默认的打开添加界面操作带按钮，用于没使用easyui生成表格的页面（添加界面地址，宽度，高度,标题,传递参数,窗口属性,按钮属性）
function defaultOpenAddPageHavebtn2(addUrl,windowW,windowH,title,params,winParams,butParams){
	//设置按钮默认参数
	butParams=butParams||{};
   if(jQuery.isEmptyObject(butParams)){
	  butParams={but:[{id:'addBtn',name:'保存',classname:'icon-save'}]};
	  }
  defaultOpenWindow(addUrl,title||'增加记录',windowW,windowH,params,winParams,butParams);
  //王涛2011-11-09增加，如果有恢复最小化的操作层时，将其隐藏
    	if($('#reMinWin').length!=0){
    		$('#reMinWin').hide();
    	}
}

//处理一般业务的通用js，用于类似删除的操作。（业务处理的地址，业务处理名称，操作请求传递的参数）
function defaultHandleItems(handleActionName,handleName,param,callback){
    var chks = getSelIds();
    if(chks.length>0){
       $.messager.confirm('警告', '您确定要'+handleName+'数据吗?<br/><font color=red>已选中'+chks.length+'行记录</font>', function(r){
			if (r){
					param = $.extend({},param,{chkSelf:chks});
					 $.post(handleActionName,param,function(data){
					    try{
					            jsonReStr = jQuery.parseJSON(data);  //获取从服务器得到的数据反馈信息
					            if(jsonReStr.opState=="success"){    //操作成功处理
					            	$('input[name="page"]').val($('input[name="page"]').attr('val'));
									$('form')[0].submit();
					            }else if(jsonReStr.opState=="failure"){  //操作失败处理
					                $.messager.alert('消息提示','操作处理失败！原因如下：<br><font color=red>'+jsonReStr.opInfo+'</font>','error');
					            }
				            }catch(e){
				            	msg = ''+e;
				            	if(msg.length>280)msg = msg.substr(0,280)+'...';
				               $.messager.alert('消息提示','出现系统错误!可能原因如下：<br><font color=red>'+this.url+'页面地址未找到！或'+msg+'</font>','error');
				            }
				            finally{
				            	if(callback&&typeof(callback)=='function'){
				            		callback(data);
				            	}
				            }
					 });//删除操作	    
			}
		});		
    }else{
       $.messager.alert('消息提示','请选择要'+handleName+'的记录','error');
	   return;
    }
}

//删除记录操作，用于没有使用easyui生成表格的页面（删除页面的访问地址）
function defaultDeleteItems2(delActionName,param){
    defaultHandleItems(delActionName,'删除',param);
}

//默认的点击查询按钮后触发的事件
function defaultSearchAction(params,tabid){
	if(!params)params={};
	if(!tabid)tabid='searchTable';
    //点击查询后将页面设置第一页
    $('#'+tabid).datagrid('getPager').pageNumber=1;
	$('#'+tabid).datagrid('getPager').pagination("options").pageNumber = 1;
	
	var queryParams = $('#'+tabid).datagrid("options").queryParams;
	for(var p in queryParams){
		if(p=='')queryParams[p] = undefined;
		if(p.indexOf('search.')==0&&$('#'+p.substr(7)).length>0)
			queryParams[p]=$('#'+p.substr(7)).val();//赋值查询参数值
	}
	for(var p in params){
		if(p&&p!='')
			queryParams['search.'+p]=params[p];//赋值查询参数值
	}
	$('#'+tabid).datagrid('reload');   
}

//进行添加或编辑操作后，根据返回的json数据获取操作结果信息的通用方法
function returnOptMsg(data,index,reMsg){
    try{
        jsonReStr = jQuery.parseJSON(data);  //获取从服务器得到的数据反馈信息
        if(jsonReStr.opState=="success"){    //操作成功处理
           if(reMsg!=undefined||reMsg!=null){
              $.util.showTip({content:reMsg});
           }else if(jsonReStr.opInfo.length==0){  
              $.util.showTip({content:'数据保存成功！'});
           }else{
               $.util.showTip({content:jsonReStr.opInfo});
           }   
         $('#searchTable').datagrid('reload'); //刷新数据列
         if(index!=undefined||index!=null)
              $('#searchTable').datagrid('endEdit', index);
         	return true;
        }else if(jsonReStr.opState=="failure"){  //操作失败处理
            if(index!=undefined)
                $('#searchTable').datagrid('cancelEdit', index);  //将更改的数据还原 
            else
                try{$('#operateWindow').window("open");}catch(e){;}
                $.messager.alert('消息提示','操作处理失败！原因如下：<br><font color=red>'+jsonReStr.opInfo+'</font>','error');
        }
       }catch(e){
          $.messager.alert('消息提示','出现系统错误!可能原因如下：<br><font color=red>'+e+'</font>','error');
          if(index!=undefined||index!=null)
              $('#searchTable').datagrid('cancelEdit', index);  //将更改的数据还原
       }
       return false;
}

//进行添加或编辑操作后，根据返回的json数据获取操作结果信息的通用方法,用于列表页面时jsp生成的情况
function returnOptMsgForJsp(data,index,reMsg){
    try{
    	top.removeLoading=(top.removeLoading||$.util.removeLoading);
    	top.showTip=(top.showTip||$.util.showTip);
        jsonReStr = jQuery.parseJSON(data);  //获取从服务器得到的数据反馈信息
        if(jsonReStr.opState=="success"){    //操作成功处理   
         top.removeLoading();
     	$('input[name="page"]').val($('input[name="page"]').attr('val'));
		$('form')[0].submit();
         if(reMsg!=undefined||reMsg!=null){
              top.showTip({content:reMsg});
           }else if(jsonReStr.opInfo.length==0){  
              top.showTip({content:'数据保存成功！'});
           }else{
              top.showTip({content:jsonReStr.opInfo});
           }
        }else if(jsonReStr.opState=="failure"){  //操作失败处理
            $('#operateWindow').window("open");
            top.removeLoading();
            $.messager.alert('消息提示','操作处理失败！原因如下：<br><font color=red>'+jsonReStr.opInfo+'</font>','error');
        }
       }catch(e){
            $('#operateWindow').window("open");
            top.removeLoading();
            $.messager.alert('消息提示','出现系统错误!可能原因如下：<br><font color=red>'+e+'</font>','error');
       }
       return false;
}

//编辑列的格式化展示
function editorColomFormat(value,row,index){
     if (row.editing){   
          var s = '<a style="cursor:hand;color:blue" onclick="saverow('+index+')">保存</a> ';   
          var c = '<a style="cursor:hand;color:blue" onclick="cancelrow('+index+')">取消</a>';   
          return s+c;   
      } else {   
          var e = '<a style="cursor:hand;color:blue" onclick="editrow('+index+')">编辑</a> ';  
          return e;   
      }
}


document.onkeyup=function(e){  
	var e = $.event.fix(window.event);
	var obj = e.target;
	if(e.keyCode==13&&obj&&obj.tagName!='TEXTAREA'){
		var btn = $('div.messager-body div.messager-button a.l-btn');
		if(btn.length>0){
			btn.each(function(){//回车默认触发确定按钮事件
				if($(this).text()=='确定')
					$(this).click();
			});
		}
		document.keyupNextInput(obj);
		return true;//阻止了回车键事件冒泡 //不能阻止冒泡，否则出现文本域中不能输入回车现象
	}
};

document.keyupNextInput = function(obj){
	obj = obj||e.target;
	//增加输入框回车跳转到下一个输入框的事件
	if(obj&&obj.tagName&&obj.tagName.toLowerCase()=='input'&&obj.type.toLowerCase()=='text'){
		var p = $(obj).parent();
		while(p.length>0&&p.attr('tagName')&&p.attr('tagName').toLowerCase()!='table'){p=p.parent();}
		if(p.length>0){
			var ary = p.find('input[type="text"],textarea');
			for(var i=0;i<ary.length;i++){
				if(ary[i]==obj){
					var no = ary[i+1];
					while(no&&(no.disabled||no.readOnly)&&i<ary.length-1){
						i++;no=ary[i+1];
					}
					if(no){
						$(no).focus();
						break;
					}
				}
			}
		}
	}
};
document.onkeydown = function(){
	var e = $.event.fix(window.event);
	if((e.keyCode == 8) && //在页面上禁用退格键
		 (e.target.type != "text" && 
		 e.target.tagName != "TEXTAREA" && 
		 e.target.type != "password")){
		return false;
	}
};


//默认的打开窗口的操作(页面地址，窗口标题，窗口高度，窗口宽度，打开页面时的传递参数，弹出窗口的属性,按钮属性)
function openWin(loadId,title,windowW,windowH,params,winParams,butParams){
        title = title||"新窗口";
        windowH = windowH||300;
        windowW = windowW||400;
        params = params||{};
		butParams=butParams||{};
        //当窗口高度高于450时，将窗口高度设置为450，并以此高度进行居中
        windowW = Math.max(10,Math.min(windowW,$(window).width()-80));
        windowH = Math.max(10,Math.min(windowH,$(window).height()-60));
        var left = ($(window).width()-windowW)/2+$(document).scrollLeft();
        var top = ($(window).height()-windowH)/2+$(document).scrollTop();
        winParams = winParams||defaultWinParms;
        winParams = $.extend({
			 title:title,
			 width:windowW,
		     height:windowH,
			 left:left,
			 maximizable : true,
             top:top,
             draggable:true,
             onMaximize:function(){//处理弹出窗口最大化时超过可见区域的问题
            	 var opts=$(this).window('options');
            	 if(!opts.oldSize){
            		 $(this).window('restore');
            		 opts.oldSize={width:opts.width,height:opts.height,left:opts.left,top:opts.top};
                	 $(this).window('resize',{left:$('body').scrollLeft(),top:$('body').scrollTop(),width:$(window).width(),height:$(window).height()});
            	 }
            	 else{
            		 $(this).window('restore').window('resize',opts.oldSize);
            		 opts.oldSize=null;
            	 }
             },
             onBeforeClose:function(){
                 $('#'+loadId).hide();
                 $("body").append($('#'+loadId));
                 $("#div_page_easyui").empty();
             }
             
		},winParams);
		$('#'+loadId).show();
		//重新设置窗口属
		getOperatorWindow(butParams).window(winParams);
		//清除窗口内容，避免打开窗口时显示前一操作时的页面信息内容
		$("#div_page_easyui").empty();
		//加载添加页面
		$("#div_page_easyui").append($('#'+loadId));
		getOperatorWindow(butParams).window('open'); 
		//解析easyui标签
		$.parser.parse($('#operateWindow'));
}


/* 
**************图片预加载插件****************** 
///作者：没剑(2008-06-23) 
///http://regedit.cnblogs.com 
///说明：在图片加载前显示一个加载标志，当图片下载完毕后显示图片出来 
可对图片进行是否自动缩放功能 
此插件使用时可让页面先加载，而图片后加载的方式， 
解决了平时使用时要在图片显示出来后才能进行缩放时撑大布局的问题 
///参数设置： 
scaling 是否等比例自动缩放 
width 图片最大高 
height 图片最大宽 
loadpic 加载中的图片路径 
*/ 

jQuery.fn.loadImage = function(scaling, width, height, loadpic) {
	if (loadpic == null)
		loadpic = _bp+"/images/noshow.jpg";
	return this.each(function() {
		var t = $(this);
		var src = $(t).attr("src");
		var img = new Image();
		// alert("Loading")
		img.src = src;
		// 自动缩放图片
		var autoScaling = function() {
			if (scaling) {
				if (img.width > 0 && img.height > 0) {
					if (img.width / img.height >= width / height) {
						if (img.width > width) {
							t.width(width);
							t.height((img.height * width) / img.width);
						} else {
							t.width(img.width);
							t.height(img.height);
						}
					} else {
						if (img.height > height) {
							t.height(height);
							t.width((img.width * height) / img.height);
						} else {
							t.width(img.width);
							t.height(img.height);
						}
					}
				}
			}
		};
		// 处理ff下会自动读取缓存图片
		if (img.complete) {
			// alert("getToCache!");
			autoScaling();
			return;
		}
		$(this).attr("src", "");
		var loading = $("<img  src=\"" + loadpic
				+ "\" />");
		t.hide();
		t.after(loading);
		$(img).load(function() {
			autoScaling();
			loading.remove();
			t.attr("src", this.src);
			t.show();
				// alert("finally!")
			});
	});
};